package com.gitee.ywj1352.webFlux.load;

import java.util.concurrent.CompletableFuture;

/**
 * @author wenjie.yang on 2019/7/16.
 */
public class CompletableFutureDemo {

    public static void main(String[] args) {

        //Reactive
        //Fluent
        //Stream 流式
        //流程编排
        //大多数的业务逻辑 是数据操作
        //消费类型 consumer
        //转换类型 function
        //提升/减少维度 map/reduce
        String result = CompletableFuture.supplyAsync(() -> {
            System.out.println(Thread.currentThread().getName());
            return "Hello "; // 第一步的输出 放入第二部的输出
        }).thenApplyAsync(v -> {
            System.out.println(Thread.currentThread().getName());
            return v + "world";
        }).whenComplete((v,error)->{
            System.out.println("执行完成");
        }).join();//等待结果
        System.out.println(result);
        /**
         * ForkJoinPool.commonPool-worker-1
         * ForkJoinPool.commonPool-worker-1
         * Hello world
         *
         * 这里 只会有一个线程 来执行
         * 不会 增加另一个线程因为这里的 多个线程没意义
         */

        //三段式编程 try-catch-finally

        //业务执行
        //业务完成
        //异常处理
        try{

        }catch (Exception e){

        }finally {

        }

    }


}
